Expand description
Most of the CW* specs are focused on the public interfaces
of the contract. The APIs used for ExecuteMsg
or QueryMsg
.
However, when we wish to migrate or inspect smart contract info,
we need some form of smart contract information embedded on state.
This is where CW2 comes in. It specifies a special Item to
be stored on disk by all contracts on instantiate
.
ContractInfo
must be stored under the "contract_info"
key which translates
to "636F6E74726163745F696E666F"
in hex format.
Since the state is well defined, we do not need to support any “smart queries”.
We do provide a helper to construct a “raw query” to read the ContractInfo
of any CW2-compliant contract.
For more information on this specification, please check out the README.
Structs
Constants
Functions
get_contract_version can be use in migrate to read the previous version of this contract
This will make a raw_query to another contract to determine the current version it
claims to be. This should not be trusted, but could be used as a quick filter
if the other contract exists and claims to be a cw20-base contract for example.
(Note: you usually want to require interfaces not implementations of the
contracts you compose with, so be careful of overuse)
set_contract_version should be used in instantiate to store the original version, and after a successful
migrate to update it